A token bucket flow rate regulator or limiter works as follows. A token counter, representing the bucket, is incremented at regular intervals. The token count saturates at a threshold (full bucket). When a data packet arrives, the packet size is compared with the token count in the bucket. If the token count is sufficient, the packet is sent and the corresponding tokens are removed from the bucket. Otherwise, the packet is discarded or waits for a sufficient token count to be reached.
Such a flow rate limiter can comply a data flow to a so-called σ-ρ (sigma-rho) profile. The ρ parameter corresponds to an average flow rate, often a normalized value between 0 and 1 expressing a fraction of the nominal bandwidth of the transmission link. This ρ parameter corresponds to the filling rate of the token bucket. The σ parameter, often referred to as “burstiness”, expresses the flow rate irregularity tolerated during transmission. This parameter σ corresponds to the capacity of the bucket
More specifically, packet size is usually expressed in flits (FLow digITs), a flit corresponding, for instance, to a word that can be transmitted in one cycle of a clock of the transmission link. Then, a flow conforming to a σ-ρ profile is such that the number of flits transmitted in any interval Δt is at most equal to ρ·Δt+σ. If the parameter ρ is a dimensionless value comprised between 0 and 1, the value Δt is the number of flits that can be transmitted continuously in the interval Δt, or simply the number of clock cycles contained in the interval Δt.
Incrementing the token counter is usually based on the transmission clock. Thus, incrementing the counter continuously, i.e. at each clock cycle, yields ρ=1. Dividing the clock frequency divides the incrementing frequency of the token counter, producing smaller values for ρ, for example ½, ⅓, ¼, ⅕, etc., for respective division factors of 2, 3, 4, 5 . . . .
The degree of adjustment thus obtained for parameter ρ may be insufficient in certain applications.